// // // import { Injectable } from '@angular/core';
// // // import { BehaviorSubject } from 'rxjs';
// // // import { DraggableItem } from '../models/layout.models';
// // //
// // // @Injectable({
// // //   providedIn: 'root'
// // // })
// // // export class DragDropService {
// // //   private currentDragItem = new BehaviorSubject<DraggableItem | null>(null);
// // //   currentDragItem$ = this.currentDragItem.asObservable();
// // //
// // //   setDragItem(item: DraggableItem) {
// // //     this.currentDragItem.next(item);
// // //   }
// // //
// // //   clearDragItem() {
// // //     this.currentDragItem.next(null);
// // //   }
// // // }
// //
// // import { Injectable } from '@angular/core';
// // import { BehaviorSubject } from 'rxjs';
// // import { DraggableItem, LayoutContainer, WidgetComponent } from '../models/layout.models';
// // import { ContainerConfigService } from './container-config.service';
// //
// // @Injectable({
// //   providedIn: 'root'
// // })
// // export class DragDropService {
// //   private currentDragItem = new BehaviorSubject<DraggableItem | null>(null);
// //   currentDragItem$ = this.currentDragItem.asObservable();
// //
// //   constructor(private containerConfig: ContainerConfigService) {}
// //
// //   setDragItem(item: DraggableItem) {
// //     this.currentDragItem.next(item);
// //   }
// //
// //   clearDragItem() {
// //     this.currentDragItem.next(null);
// //   }
// //
// //   canDropInContainer(container: LayoutContainer, item: DraggableItem): boolean {
// //     return this.containerConfig.canContainerAccept(container.type, item.type);
// //   }
// //
// //   canDropInWidget(widget: WidgetComponent, item: DraggableItem): boolean {
// //     return false; // 组件不能接受拖拽项
// //   }
// //
// //   // 生成唯一ID
// //   generateId(prefix: string): string {
// //     return `${prefix}-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
// //   }
// // }
//
// import { Injectable } from '@angular/core';
// import { BehaviorSubject } from 'rxjs';
// import { DraggableItem, LayoutContainer, WidgetComponent } from '../models/layout.models';
// import { ContainerConfigService } from './container-config.service';
//
// @Injectable({
//   providedIn: 'root'
// })
// export class DragDropService {
//   private currentDragItem = new BehaviorSubject<DraggableItem | null>(null);
//   currentDragItem$ = this.currentDragItem.asObservable();
//
//   constructor(private containerConfig: ContainerConfigService) {}
//
//   setDragItem(item: DraggableItem) {
//     this.currentDragItem.next(item);
//   }
//
//   clearDragItem() {
//     this.currentDragItem.next(null);
//   }
//
//   canDropInContainer(container: LayoutContainer, item: DraggableItem): boolean {
//     return true; // 简化处理
//   }
//
//   canDropInWidget(widget: WidgetComponent, item: DraggableItem): boolean {
//     return false;
//   }
//
//   generateId(prefix: string): string {
//     return `${prefix}-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
//   }
// }

import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
import { DraggableItem } from '../models/layout.models';

@Injectable({
  providedIn: 'root'
})
export class DragDropService {
  private currentDragItem = new BehaviorSubject<DraggableItem | null>(null);
  currentDragItem$ = this.currentDragItem.asObservable();

  setDragItem(item: DraggableItem) {
    this.currentDragItem.next(item);
  }

  clearDragItem() {
    this.currentDragItem.next(null);
  }

  generateId(prefix: string): string {
    return `${prefix}-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
  }
}
